#ifndef SKILLHANDLER_H
#define SKILLHANDLER_H

#include <QObject>
#include "ghost.h"

class Ghost;
class SkillHandler;
class GhostSkillHandler;

class SkillHandler : public QObject
{
    Q_OBJECT
public:
    SkillHandler( QObject *parent = 0 )
        :QObject( parent )
    {
    }
    virtual QString description() = 0;
public slots:
    virtual bool trigger() = 0;
signals:
    void triggered();
};

class GhostSkillHandler : public SkillHandler
{
    Q_OBJECT
public:
    GhostSkillHandler( Ghost::BaneSkill _skill, QObject *parent = 0 )
        :SkillHandler( parent )
    {
    }

    QString description()
    {
        return Ghost::SkillToString( _skill );
    }

public slots:
    virtual bool trigger() = 0;
private:
    Ghost::BaneSkill _skill;
};

#endif // SKILLHANDLER_H
